Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Exceptions
8 Die Funktionsbibliothek
9 Threads und nebenläufige Programmierung
10 Raum und Zeit
11 Datenstrukturen und Algorithmen
12 Dateien und Datenströme
13 Die eXtensible Markup Language (XML)
14 Grafische Oberflächen mit Swing
15 Grafikprogrammierung
16 Das Netz
17 JavaServer Pages und Servlets
18 Verteilte Programmierung mit RMI und Web–Services
19 Applets, Midlets und Sound
20 Datenbankmanagement mit JDBC
21 Reflection und Annotationen
22 Komponenten durch Bohnen
23 Logging und Monitoring
24 Sicherheitskonzepte
25 Java Native Interface (JNI)
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Index

Download:
- ZIP, ca. 12,5 MB
Buch bestellen

Website zum Buch
Weblog des Autors
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
6., akt. und erw. Aufl., mit DVD
1.454 S., 49,90 Euro
Galileo Computing
ISBN 3-89842-838-9
gp 3 Klassen und Objekte
  gp 3.1 Objektorientierte Programmierung
    gp 3.1.1 Warum überhaupt OOP?
    gp 3.1.2 Wiederverwertbarkeit
  gp 3.2 Eigenschaften einer Klasse
  gp 3.3 Die UML (Unified Modeling Language)
    gp 3.3.1 Hintergrund und Geschichte zur UML
    gp 3.3.2 Wichtige Diagrammtypen der UML
  gp 3.4 Anlegen und Nutzen eines Punktes
    gp 3.4.1 Deklarieren von Referenz-Variablen
    gp 3.4.2 Anlegen eines Exemplars einer Klasse mit dem new-Operator
    gp 3.4.3 Zugriff auf Variablen und Methoden mit dem ».«
    gp 3.4.4 Konstruktoren nutzen
  gp 3.5 Import und Pakete
  gp 3.6 Die API-Dokumentation
  gp 3.7 Mit Referenzen arbeiten
    gp 3.7.1 Die null-Referenz
    gp 3.7.2 Zuweisungen bei Referenzen
    gp 3.7.3 Funktionen mit nicht-primitiven Parametern
  gp 3.8 Identität und Gleichheit
    gp 3.8.1 Identität von Objekten
    gp 3.8.2 Gleichheit und die Methode equals()
  gp 3.9 Arrays
    gp 3.9.1 Deklaration von Arrays
    gp 3.9.2 Arrays mit Inhalt
    gp 3.9.3 Die Länge eines Arrays über das Attribut length
    gp 3.9.4 Zugriff auf die Elemente über den Index
    gp 3.9.5 Array-Objekte erzeugen
    gp 3.9.6 Fehler bei Arrays
    gp 3.9.7 Arrays mit nicht-primitiven Elementen
    gp 3.9.8 Vorinitialisierte Arrays
    gp 3.9.9 Die erweiterte for-Schleife
    gp 3.9.10 Mehrdimensionale Arrays
    gp 3.9.11 Die Wahrheit über die Array-Initialisierung
    gp 3.9.12 Mehrere Rückgabewerte
    gp 3.9.13 Methode mit variabler Argumentanzahl (Vararg)
    gp 3.9.14 Arrays klonen
    gp 3.9.15 Feldinhalte kopieren
    gp 3.9.16 Die Klasse Arrays zum Vergleichen, Füllen und Suchen
  gp 3.10 Der Einstiegspunkt für das Laufzeitsystem main()
    gp 3.10.1 Kommandozeilen-Argumente verarbeiten
    gp 3.10.2 Der Rückgabewert von main() und System.exit()
    gp 3.10.3 Parser der Kommandozeilenargumente – Apache CLI
  gp 3.11 Eigene Pakete schnüren
    gp 3.11.1 Die package-Anweisung
    gp 3.11.2 Importieren von Klassen mit import
    gp 3.11.3 Paketnamen
    gp 3.11.4 Hierarchische Strukturen und das Default-Package
    gp 3.11.5 Klassen mit gleichen Namen in unterschiedlichen Paketen
    gp 3.11.6 Statisches Import
    gp 3.11.7 Eine Verzeichnisstruktur für eigene Projekte
  gp 3.12 Zum Weiterlesen


Galileo Computing

3.10 Der Einstiegspunkt für das Laufzeitsystem main()  downtop

In Java-Klassen gibt es – ähnlich wie in C(++) – eine besondere Funktion main(), die das Laufzeitsystem in der angegebenen Hauptklasse (oder Startklasse) des Programms aufruft. Die main()-Funktion ist für alle Klassen und in der JVM zugänglich (public) und auf jeden Fall statisch (static) zu deklarieren. Die Methode muss statisch sein, da auch ohne Exemplar der Klasse ein Funktionsaufruf möglich sein soll. Als Parameter wird ein Array von String-Objekten angenommen. In diesem sind die auf der Kommandozeile übergebenen Parameter gespeichert:

public static void main( String[] args )

Stimmt der Kopf der Methode nicht, dann wird diese Funktion nicht als Einstiegspunkt von der virtuellen Maschine erkannt.


Hinweis Im Gegensatz zu C(++) steht im ersten Element des Argument-Arrays mit Index 0 nicht der Programmname, also der Name der Hauptklasse, sondern bereits der erste Programmparameter der Kommandozeile.


Galileo Computing

3.10.1 Kommandozeilen-Argumente verarbeiten  downtop

Eine besondere Variable für die Anzahl der übergebenen Argumente der Kommandozeile ist nicht vonnöten, da das String-Array-Objekt uns diese Information über length mitteilt. Um etwa alle übergebenen Argumente über die erweiterte for-Schleife auszugeben, schreiben wir:

Listing 3.13    LovesGoldenHamster.java, main()

public static void main( String[] args ) 
{ 
  if ( args.length == 0 ) 
    System.out.println( "Was!! Keiner liebt kleine Hamster?" ); 
  else 
  { 
    System.out.print( "Liebt kleine Hamster: " ); 
 
    for ( String s : args ) 
      System.out.format( "%s ", s ); 
 
    System.out.println(); 
  } 
}

Das Programm lässt sich auf der Kommandozeile wie folgt aufrufen:

$ java LovesGoldenHamster Raphael Regina Paul Mirjam


Galileo Computing

3.10.2 Der Rückgabewert von main() und System.exit()  downtop

Der Rückgabetyp void ist sicherlich diskussionswürdig, da diejenigen, die die Sprache entworfen haben, auch hätten fordern können, dass ein Programm immer einen Statuscode an das aufrufende Programm zurückgibt. Für diese Lösung haben sie sich aber nicht entschieden, da Java-Programme in der Regel nur minimal mit dem umgebenden Betriebssystem interagieren sollen und echte Plattformunabhängigkeit gefordert ist, etwa bei Java in Handys. Für die Fälle, in denen ein Statuscode zurückgeliefert werden soll, steht die Funktion exit(status) der Klasse System zur Verfügung; sie beendet eine Applikation. Die Übergabe an die Funktion nennt sich Statuswert (engl. exit status) und wird an die Kommandozeile zurückgegeben. Der Wert ist für Skriptprogramme wichtig, denn sie können über diesen Rückgabewert auf das Gelingen oder Misslingen des Java-Programms reagieren. Ein Wert von 0 zeigt per Definition das Gelingen an, ein Wert ungleich 0 einen Fehler. Der Wertebereich sollte sich zwischen 0 und 255 bewegen. Unter der Unix-Kommandozeile ist der Rückgabewert eines Programms unter $? verfügbar.


final class java.lang.System

  • static void exit( int status ) Ein Aufruf von exit() beendet die aktuelle JVM und gibt das Argument der Methode als Statuswert zurück. Ein Wert ungleich null zeigt einen Fehler an. Also ist der Rückgabewert beim normalen fehlerfreien Verlassen null. Eine SecurityException wird ausgelöst, falls der aktuelle SecurityManager dem aufrufenden Code nicht erlaubt, die JVM zu beenden. Das gilt insbesondere bei Applets in einem Webbrowser.

Galileo Computing

3.10.3 Parser der Kommandozeilenargumente – Apache CLI  toptop

Zum Parsen der Kommandozeilenargumente bietet sich ein externes Paket von Apache an: CLI (http://jakarta.apache.org/commons/cli/). Um Optionen aufzubauen, ist als Erstes ein Options-Objekt nötig. Die Klassen befinden sich unter dem Paket org.apache.commons.cli.

Options options = new Options();

Diesem können nun einzelne Optionen mithilfe der Funktion addOption() hinzugefügt werden. Nehmen wir an, wir wollten unserer Applikation eine Option -h erlauben. Wenn sie angegeben wird, also auf der Kommandozeile -h auftaucht, soll eine Hilfe ausgegeben werden.

options.addOption( "h", false, "Hilfe anzeigen" );

Das erste Argument ist der Name der Option, die zweite Angabe eine Aussage, ob die Option Argumente hat oder nicht, und das dritte Argument ist ein Informationsstring. addOption() kann auch mit einem Option-Objekt parametrisiert werden. Für unsere Wahrheitsoption bedeutet dies:

Option hilfe = new Option( "h", "Hilfe anzeigen" ); 
options.addOption( hilfe );

Die Option-Objekte werden bei Argumenten interessant, die weitere Angaben enthalten. Ein Beispiel für die Angabe auf der Kommandozeile wäre:

$ java Programm -size=8000 -file dumdum.txt

Die Option size erwartet ein Argument nach dem Gleichheitszeichen. Die Option kann zum Beispiel mit OptionBuilder.withLongOpt() konstruiert werden.

options.addOption( OptionBuilder.withLongOpt( "size" ) 
                                .withDescription( "size zur Angabe der Größe" ) 
                                .withValueSeparator( '=' ) 
                                .hasArg() 
                                .create() );

Um die Argumente abzufragen, muss nach dem Aufbau des Option-Objekts das konkrete Argument der Kommandozeile geparst werden. Dazu dient die Funktion parse(String[] args):

CommandLine cmd = options.parse(args);

Das CommandLine-Objekt bietet hasOption(String), mit dem eine Option abgefragt werden kann. Für unsere Wahrheitsoption heißt das:

if ( cmd.hasOption("h") ) 
  // Hilfe-Option ist gesetzt

Die Argumente der Optionen mit Argumenten werden mit getOptionValue(String) erfragt. Bei unserer Größenangabe wäre dies:

String size = options.getOptionValue( "size" ); 
if ( size == null ) { 
  // Nicht gesetzt. 
} 
else { 
  // size ist gesetzt. 
}

Auch mit hasOption() lässt sich erfragen, ob das Argument überhaupt gesetzt ist.

Die CLI-Bibliothek kann automatisch eine Hilfe mit den Optionen anzeigen. Dazu dient die Funktion printHelp() aus HelpFormatter:

HelpFormatter formatter = new HelpFormatter(); 
formatter.printHelp( "programmname", options );

Ein boolean-Argument lässt sich noch anhängen und gibt dann noch mehr Informationen an.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.





 <<   zurück



Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de